import axios from 'axios';
import { ElMessage } from 'element-plus';

// 创建 axios 实例
const api = axios.create({
  baseURL: process.env.VUE_APP_API_BASE_URL || 'http://localhost:3000',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json'
  }
});

// 请求拦截器
api.interceptors.request.use(
  (config) => {
    // 从本地存储获取 token
    const token = localStorage.getItem('token');
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error) => {
    console.error('请求错误:', error);
    return Promise.reject(error);
  }
);

// 响应拦截器
api.interceptors.response.use(
  (response) => {
    return response.data;
  },
  (error) => {
    // 处理特殊的401错误（未授权）
    if (error.response && error.response.status === 401) {
      ElMessage.error('未授权，请重新登录');
      // 清除本地 token
      localStorage.removeItem('token');
      localStorage.removeItem('user');
      // 跳转到登录页
      if (window.location.pathname !== '/login') {
        window.location.href = '/login';
      }
    }
    
    // 其他错误不在这里显示，由组件自己处理
    // 这样组件可以根据具体情况显示更友好的错误信息
    return Promise.reject(error);
  }
);

// 分类管理相关 API
export const categoryAPI = {
  // 获取分类列表
  getList() {
    return api.get('/api/categories');
  },
  
  // 获取单个分类详情
  getDetail(id) {
    return api.get(`/api/categories/${id}`);
  },
  
  // 创建分类
  create(data) {
    return api.post('/api/categories', data);
  },
  
  // 更新分类
  update(id, data) {
    return api.put(`/api/categories/${id}`, data);
  },
  
  // 删除分类
  delete(id) {
    return api.delete(`/api/categories/${id}`);
  }
};

// 认证相关 API
export const authAPI = {
  // 用户注册
  register(data) {
    return api.post('/api/auth/register', data);
  },
  
  // 用户登录
  login(data) {
    return api.post('/api/auth/login', data);
  },
  
  // 获取用户信息
  getProfile() {
    return api.get('/api/auth/profile');
  }
};

// 水果管理相关 API
export const fruitAPI = {
  // 获取水果列表
  getList(params) {
    return api.get('/api/fruits', { params });
  },
  
  // 获取单个水果详情
  getDetail(id) {
    return api.get(`/api/fruits/${id}`);
  },
  
  // 创建水果
  create(data) {
    return api.post('/api/fruits', data);
  },
  
  // 更新水果
  update(id, data) {
    return api.put(`/api/fruits/${id}`, data);
  },
  
  // 删除水果
  delete(id) {
    return api.delete(`/api/fruits/${id}`);
  },
  
  // 批量删除水果
  batchDelete(ids) {
    return api.post('/api/fruits/batch-delete', { ids });
  }
};

// 仓库管理相关 API
export const warehouseAPI = {
  // 获取仓库列表
  getList(params) {
    return api.get('/api/warehouses', { params });
  },
  
  // 获取单个仓库详情
  getDetail(id) {
    return api.get(`/api/warehouses/${id}`);
  },
  
  // 获取单个仓库详情（别名）
  getById(id) {
    return api.get(`/api/warehouses/${id}`);
  },
  
  // 创建仓库
  create(data) {
    return api.post('/api/warehouses', data);
  },
  
  // 更新仓库
  update(id, data) {
    return api.put(`/api/warehouses/${id}`, data);
  },
  
  // 删除仓库
  delete(id) {
    return api.delete(`/api/warehouses/${id}`);
  },
  
  // 批量删除仓库
  batchDelete(ids) {
    return api.post('/api/warehouses/batch-delete', { ids });
  },
  
  // 获取仓库中的水果列表
  getWarehouseFruits(warehouseId) {
    return api.get(`/api/warehouses/${warehouseId}/fruits`);
  },
  
  // 添加水果到仓库
  addFruitToWarehouse(warehouseId, data) {
    return api.post(`/api/warehouses/${warehouseId}/fruits`, data);
  },
  
  // 更新仓库中水果的数量
  updateWarehouseFruit(warehouseId, fruitWarehouseId, data) {
    return api.put(`/api/warehouses/${warehouseId}/fruits/${fruitWarehouseId}`, data);
  },
  
  // 从仓库移除水果
  removeFruitFromWarehouse(warehouseId, fruitWarehouseId) {
    return api.delete(`/api/warehouses/${warehouseId}/fruits/${fruitWarehouseId}`);
  }
};

// 统计数据相关 API
export const statsAPI = {
  // 获取统计数据
  getStats() {
    return api.get('/api/stats');
  }
};

export default api;


